package com.xwm93up.basic.iotips;

import org.aspectj.weaver.ast.Var;
import org.junit.Test;

import java.io.File;
import java.io.IOException;

/**
 * @Description: desc
 * @Author: xwm93up
 * @Since: 2023/2/27 10:57
 */
public class FileDemo {

    /**
     * 创建文件
     */
    @Test
    public void test1() {
        File file = new File("D:\\file.txt");
        try {
            file.createNewFile();// 创建一个新文件
            // File类的两个常量
            // 路径分隔符(与系统有关的) <windows里面是 ; linux里面是 :>
            System.out.println(File.pathSeparator);

            // 与系统有关的路径名称分隔符 <windows里面是 \ linux里面是 />
            System.out.println(File.separator);

            // System.out.println(file.getName());

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 删除文件
     */
    @Test
    public void test2() {
        // 删除文件
        try {
            File file1 = new File("D:\\file.txt");
            if (file1.exists()) {
                file1.delete();
            } else {
                System.out.println("文件不存在");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 创建文件夹
     */
    @Test
    public void test3() {
        String fileName = "D:" + File.separator + "test3";
        File file = new File(fileName);
        file.mkdir();
    }

    /**
     * 列出该文件夹中所有文件（不含子文件夹）
     */
    @Test
    public void test4() {
        File file = new File("D:\\document");
        String[] list = file.list();
        File[] files = file.listFiles(); //列出所有文件，包含隐藏文件
        boolean directory = file.isDirectory();//判断指定路径是否事目录
        for (int i = 0; i < list.length; i++) {
            System.out.println(list[i]);

        }
    }

    /**
     * 递归查询该文件夹下所有文件
     */
    @Test
    public void test5() {
        File file = new File("D:\\document");
        printDir(file);
    }

    private void printDir(File file) {
        File[] files = file.listFiles();
        for (File file1 : files) {
            if (file1.isDirectory()) {
                System.out.println("目录: " + file1.getName());
                printDir(file1);
            } else {
                System.out.println("文件名: " + file1.getAbsolutePath());
            }
        }
    }
}
